#include <iostream>
using namespace std;

#ifndef _MUSIC_INLINE_H_
#define _MUSIC_INLINE_H_

class Date
{
	private :
		int m_year;
		int m_mon;
		int m_day;

	public :
		Date(int year = 2016, int mon = 05, int day = 24) :
			m_year(year), m_mon(mon), m_day(day)
		{
			cout << "Date default init()" << endl << endl;
		}

		void date_display()
		{
			cout << m_year << " - " << m_mon << " - " << m_day << endl;
		}
	protected :
};

class Music
{
	private :
		string m_song;
		string m_singer;
		string m_song_time;
		Date m_song_date;

	public :
		Music(string song ="Love Story", string singer = "Taylor Swift", string song_time = "3:57", int year = 2008, int mon = 9, int day = 12) :
			m_song(song), m_singer(singer), m_song_time(song_time), m_song_date(year, mon, day)
		{
			cout << "Default Music init()" << endl << endl;
		}

		Music(const Music& m1) :
			m_song(m1.m_song), m_singer(m1.m_singer), m_song_time(m1.m_song_time), m_song_date(m1.m_song_date)
		{
			cout << "Music copy()" << endl << endl;
		}

		~Music()
		{
			cout << "Destruction ~Music()" << endl << endl;
		}

		inline void display();

	protected :
};

inline void Music :: display()
{
	cout << "Song   : " << m_song << endl;
	cout << "Singer : " << m_singer << endl;
	cout << "Time   : " << m_song_time << endl;
	cout << "Date   : " ;
	m_song_date.date_display();
	cout << endl;
}

#endif
